package org.jeecg.modules.rooms.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 租户房型记录表
 * </p>
 *
 * @author Claude
 * @since 2023-03-11
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ces_room_layout")
public class CesRoomLayout extends Model<CesRoomLayout> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private String id;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 酒店数据ID
     */
    private String hotelId;

    /**
     * 房型大图
     */
    private String cover;

    /**
     * 房型图片
     */
    private String picture;

    /**
     * 房间名称
     */
    private String name;

    /**
     * 门市价
     */
    private BigDecimal marketPrice;

    /**
     * 可住人数
     */
    private Integer canLivePersonNum;

    /**
     * 早餐
     */
    private Integer breakfastNum;

    /**
     * 中餐
     */
    private Integer lunchNum;

    /**
     * 晚餐
     */
    private Integer dinnerNum;

    /**
     * 状态 0 否 1是
     */
    private Boolean state;

    /**
     * 是否app上架 0否 1是
     */
    private Boolean appState;

    /**
     * 1 全天房 2 钟点房
     */
    private String checkType;

    /**
     * 是否有窗户
     */
    private Boolean windows;

    /**
     * 房间通用面积
     */
    private Float area;

    /**
     * 床型尺寸
     */
    private String bedSize;

    /**
     * 备注
     */
    private String remark;

    /**
     * 房间标签
     */
    private String tags;

    /**
     * 房间设施
     */
    private String facilities;

    /**
     * 取消规则提前天数  规则 ID == 1  不用考虑这个
     */
    private Integer cancelDayNum;

    /**
     * 1 入住当天
2 入住前 天数 可以取消
3 入住前 多少天 可以取消 要收取罚金
4不可以取消
5 可取消
     */
    private Integer cancelRule;

    /**
     * 创建时间
     */
    @TableField("createAt")
    private LocalDateTime createAt;

    /**
     * 修改时间
     */
    @TableField("updateAt")
    private LocalDateTime updateAt;

    /**
     * 逻辑删除字段
     */
    private Boolean invalid;

    /**
     * 取消罚金
     */
    private BigDecimal cancelMoney;

    /**
     * 取消前时间节点
     */
    private String cancelBeforeTime;

    /**
     * 优惠价 根据全天房和钟点房计费规则来定
     */
    @TableField(exist = false)
    private BigDecimal favPrice;

    /**
     * 是否支持钟点房计费规则
     */
    @TableField(exist = false)
    private Boolean isSupportHourRule;

    /**
     * 可用房间数
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "可用房间数")
    private Integer canUseCount;


    public static final String ID = "id";

    public static final String TENANT_ID = "tenant_id";

    public static final String HOTEL_ID = "hotel_id";

    public static final String COVER = "cover";

    public static final String PICTURE = "picture";

    public static final String NAME = "name";

    public static final String MARKET_PRICE = "market_price";

    public static final String CAN_LIVE_PERSON_NUM = "can_live_person_num";

    public static final String BREAKFAST_NUM = "breakfast_num";

    public static final String LUNCH_NUM = "lunch_num";

    public static final String DINNER_NUM = "dinner_num";

    public static final String STATE = "state";

    public static final String APP_STATE = "app_state";

    public static final String CHECK_TYPE = "check_type";

    public static final String WINDOWS = "windows";

    public static final String AREA = "area";

    public static final String BED_SIZE = "bed_size";

    public static final String REMARK = "remark";

    public static final String TAGS = "tags";

    public static final String FACILITIES = "facilities";

    public static final String CANCEL_DAY_NUM = "cancel_day_num";

    public static final String CANCEL_RULE = "cancel_rule";

    public static final String CREATEAT = "createAt";

    public static final String UPDATEAT = "updateAt";

    public static final String INVALID = "invalid";

    public static final String CANCEL_MONEY = "cancel_money";

    public static final String CANCEL_BEFORE_TIME = "cancel_before_time";

    @Override
    public Serializable pkVal() {
        return this.id;
    }

}
